Software developers periodically release upgrades to their application software due to bug fixes and enhancements. By regression testing, the software developers ensure that changes made to existing software behave as desired and unchanged parts of software is not adversely affected.
Current practice of executing entire system test suite developed during software system testing to validate modified software applications is expensive and time consuming. Thus, the importance of smaller regression tests suite selection techniques. Several regression test selection techniques comprising of code-based, model-based and architecture-based have been proposed in the literature. Largely the model-based regression test suite selection techniques are based on design models. Often, for a large and complex system comprising of thousands of test cases, the developers intuitively select regression tests, based on their experience and knowledge on program change specifications that need to be re-executed. This practice is prone to errors.
The drawbacks of current regression tests selection strategies are that the techniques are based on either applications or components source code availability or changes made available in UML design diagrams such as sequence diagrams, state diagrams, and collaboration diagrams. The algorithms select the test cases from the available system test suite but cannot generate additional test cases to be added to the original system test suite.
A methodology is required which is independent of the program language used to implement the software applications.